package com.atguigu.gulimail.product;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.transaction.annotation.EnableTransactionManagement;
/*整合mybatisPlus
* 1.导入依赖
*  <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>3.2.0</version>
    </dependency>
    *
  2.配置
  * 1.配置数据源
  * 1)导入数据库驱动
  * <!--    mysql驱动-->
      <dependency>
          <groupId>mysql</groupId>
          <artifactId>mysql-connector-java</artifactId>
          <version>8.0.17</version>
      </dependency>
     2)在application.yml配置数据源相关信息
  * 2.配置mybatis-plus
  * 1.@MapperScan("com.atguigu.gulimail.product.dao")
  *  2.告诉mybatis-plus sql映射文件  配置yml
  * 3.主键配置自增
3.使用mybatis-plus逻辑删除
* 1.在配置文件中配置
* 2.实体类字段加上@TabLogic注解
*
*JSR303 分组校验
* 1.给校验注解标注什么情况需要进行校验
* 	@NotBlank(message = "品牌名不能为空",groups = {AddGroup.class,UpdateGroup.class})//至少是一个非空格字符
  2.添加@Validated注解为方法指定分组
  *     public R save(@Validated({AddGroup.class}) @RequestBody BrandEntity brand
没有指定分组的情况下，校验不生效，只会在不分组的时候生效（完成多场景的复杂校验）
四:自定义校验
* 1）自己编写自定义的校验注解
* 2）编写自定义的校验器 ConstraintValidator
* 3）关联自定义的校验器，和自定义的校验注解
* @Documented
//指定用什么校验
@Constraint(validatedBy = {ListValueConstraintValidator.class[可以指定多个校验器适配多个校验]})
@Target({METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER,TYPE_USE})
@Retention(RUNTIME)
        * */


@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients(basePackages = {"com.atguigu.gulimail.product.feign"})//开启远程调用功能
public class GulimailProductApplication {

    public static void main(String[] args) {
        SpringApplication.run(GulimailProductApplication.class, args);
    }

}
